// import com.alibaba.druid.DbType;
// import com.alibaba.druid.sql.ast.SQLName*;
// import com.alibaba.druid.sql.ast.SQLStatementImpl;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor*;

// import java.util.ArrayList;
// import java.util.std::list;
#pragma once
#include <string>
#include <list>
#include "../SQLStatementImpl.h"
#include "SQLDropStatement.h"

class SQLExprTableSource;
class SQLName;
class SQLASTVisitor;
class SQLDDLStatement;

class SQLDropViewStatement 
:virtual  public SQLStatementImpl,
 virtual public SQLDropStatement
{
public:
  SQLExprTableSource_list_ptr tableSources;

  BOOL_ptr cascade;
  BOOL_ptr restrict;
  BOOL_ptr ifExists;

  SQLDropViewStatement();

  SQLDropViewStatement(DbType_ptr  dbType);

  SQLDropViewStatement(SQLName_ptr name);

  SQLDropViewStatement(SQLExprTableSource_ptr tableSource);
  SHAREDOBJECT(SQLDropViewStatement);

  SQLExprTableSource_list_ptr getTableSources();

  void addPartition(SQLExprTableSource_ptr tableSource);

  void setName(SQLName_ptr name);

  void addTableSource(SQLName_ptr name);

  void addTableSource(SQLExprTableSource_ptr tableSource);

  BOOL_ptr isCascade();

  void setCascade(BOOL_ptr cascade);

  void accept0(SQLASTVisitor_ptr visitor);

  BOOL_ptr isRestrict();

  void setRestrict(BOOL_ptr restrict);

  BOOL_ptr isIfExists();

  void setIfExists(BOOL_ptr ifExists);

  SQLExprTableSource_list_ptr getChildren();

  SQLDDLStatement::DDLObjectType getDDLObjectType();

};
